<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>inpainting_texture [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_filters.html">过滤器</a> / <a href="toc_filters_inpainting.html">Inpainting</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">inpainting_texture</span><span data-if="c" style="display:none;">inpainting_texture</span><span data-if="cpp" style="display:none;">InpaintingTexture</span><span data-if="dotnet" style="display:none;">InpaintingTexture</span><span data-if="python" style="display:none;">inpainting_texture</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">inpainting_texture</span><span data-if="c" style="display:none;">inpainting_texture</span><span data-if="cpp" style="display:none;">InpaintingTexture</span><span data-if="dotnet" style="display:none;">InpaintingTexture</span><span data-if="python" style="display:none;">inpainting_texture</span></code> — Perform an inpainting by texture propagation.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>inpainting_texture</b>(<a href="#Image"><i>Image</i></a>, <a href="#Region"><i>区域</i></a> : <a href="#InpaintedImage"><i>InpaintedImage</i></a> : <a href="#MaskSize"><i>MaskSize</i></a>, <a href="#SearchSize"><i>SearchSize</i></a>, <a href="#Anisotropy"><i>Anisotropy</i></a>, <a href="#PostIteration"><i>PostIteration</i></a>, <a href="#Smoothness"><i>Smoothness</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>inpainting_texture</b>(const Hobject <a href="#Image"><i>Image</i></a>, const Hobject <a href="#Region"><i>区域</i></a>, Hobject* <a href="#InpaintedImage"><i>InpaintedImage</i></a>, const Hlong <a href="#MaskSize"><i>MaskSize</i></a>, const Hlong <a href="#SearchSize"><i>SearchSize</i></a>, double <a href="#Anisotropy"><i>Anisotropy</i></a>, const char* <a href="#PostIteration"><i>PostIteration</i></a>, double <a href="#Smoothness"><i>Smoothness</i></a>)</code></p>
<p>
<code>Herror <b>T_inpainting_texture</b>(const Hobject <a href="#Image"><i>Image</i></a>, const Hobject <a href="#Region"><i>区域</i></a>, Hobject* <a href="#InpaintedImage"><i>InpaintedImage</i></a>, const Htuple <a href="#MaskSize"><i>MaskSize</i></a>, const Htuple <a href="#SearchSize"><i>SearchSize</i></a>, const Htuple <a href="#Anisotropy"><i>Anisotropy</i></a>, const Htuple <a href="#PostIteration"><i>PostIteration</i></a>, const Htuple <a href="#Smoothness"><i>Smoothness</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>InpaintingTexture</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, const HObject&amp; <a href="#Region"><i>区域</i></a>, HObject* <a href="#InpaintedImage"><i>InpaintedImage</i></a>, const HTuple&amp; <a href="#MaskSize"><i>MaskSize</i></a>, const HTuple&amp; <a href="#SearchSize"><i>SearchSize</i></a>, const HTuple&amp; <a href="#Anisotropy"><i>Anisotropy</i></a>, const HTuple&amp; <a href="#PostIteration"><i>PostIteration</i></a>, const HTuple&amp; <a href="#Smoothness"><i>Smoothness</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>InpaintingTexture</b>(const HRegion&amp; <a href="#Region"><i>区域</i></a>, Hlong <a href="#MaskSize"><i>MaskSize</i></a>, Hlong <a href="#SearchSize"><i>SearchSize</i></a>, double <a href="#Anisotropy"><i>Anisotropy</i></a>, const HString&amp; <a href="#PostIteration"><i>PostIteration</i></a>, double <a href="#Smoothness"><i>Smoothness</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>InpaintingTexture</b>(const HRegion&amp; <a href="#Region"><i>区域</i></a>, Hlong <a href="#MaskSize"><i>MaskSize</i></a>, Hlong <a href="#SearchSize"><i>SearchSize</i></a>, double <a href="#Anisotropy"><i>Anisotropy</i></a>, const char* <a href="#PostIteration"><i>PostIteration</i></a>, double <a href="#Smoothness"><i>Smoothness</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>InpaintingTexture</b>(const HRegion&amp; <a href="#Region"><i>区域</i></a>, Hlong <a href="#MaskSize"><i>MaskSize</i></a>, Hlong <a href="#SearchSize"><i>SearchSize</i></a>, double <a href="#Anisotropy"><i>Anisotropy</i></a>, const wchar_t* <a href="#PostIteration"><i>PostIteration</i></a>, double <a href="#Smoothness"><i>Smoothness</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>InpaintingTexture</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, <a href="HObject.html">HObject</a> <a href="#Region"><i>区域</i></a>, out <a href="HObject.html">HObject</a> <a href="#InpaintedImage"><i>inpaintedImage</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MaskSize"><i>maskSize</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SearchSize"><i>searchSize</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Anisotropy"><i>anisotropy</i></a>, <a href="HTuple.html">HTuple</a> <a href="#PostIteration"><i>postIteration</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Smoothness"><i>smoothness</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>.<b>InpaintingTexture</b>(<a href="HRegion.html">HRegion</a> <a href="#Region"><i>区域</i></a>, int <a href="#MaskSize"><i>maskSize</i></a>, int <a href="#SearchSize"><i>searchSize</i></a>, double <a href="#Anisotropy"><i>anisotropy</i></a>, string <a href="#PostIteration"><i>postIteration</i></a>, double <a href="#Smoothness"><i>smoothness</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>inpainting_texture</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#Region"><i>区域</i></a>: HObject, <a href="#MaskSize"><i>mask_size</i></a>: int, <a href="#SearchSize"><i>search_size</i></a>: int, <a href="#Anisotropy"><i>anisotropy</i></a>: float, <a href="#PostIteration"><i>post_iteration</i></a>: str, <a href="#Smoothness"><i>smoothness</i></a>: float) -&gt; HObject</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">inpainting_texture</span><span data-if="c" style="display:none">inpainting_texture</span><span data-if="cpp" style="display:none">InpaintingTexture</span><span data-if="com" style="display:none">InpaintingTexture</span><span data-if="dotnet" style="display:none">InpaintingTexture</span><span data-if="python" style="display:none">inpainting_texture</span></code> is used for removing large
objects and image errors from the region <a href="#Region"><i><code><span data-if="hdevelop" style="display:inline">区域</span><span data-if="c" style="display:none">区域</span><span data-if="cpp" style="display:none">区域</span><span data-if="com" style="display:none">区域</span><span data-if="dotnet" style="display:none">区域</span><span data-if="python" style="display:none">区域</span></code></i></a> of the
input image <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a>. Image blocks of side length
<a href="#MaskSize"><i><code><span data-if="hdevelop" style="display:inline">MaskSize</span><span data-if="c" style="display:none">MaskSize</span><span data-if="cpp" style="display:none">MaskSize</span><span data-if="com" style="display:none">MaskSize</span><span data-if="dotnet" style="display:none">maskSize</span><span data-if="python" style="display:none">mask_size</span></code></i></a> are copied from the intact part of the image to
the border of the computation area, until that area has been filled
up with new gray values. This process is called image inpainting.
Hence, the computation area is also referred to as the inpainting
area and is reduced with every inserted rectangle, starting with
<a href="#Region"><i><code><span data-if="hdevelop" style="display:inline">区域</span><span data-if="c" style="display:none">区域</span><span data-if="cpp" style="display:none">区域</span><span data-if="com" style="display:none">区域</span><span data-if="dotnet" style="display:none">区域</span><span data-if="python" style="display:none">区域</span></code></i></a>. Let the center of the current block be at the point
x. Since x is always chosen from the border of the inpainting
area the current block overlaps with the known or already filled-in
gray values.  The gray value correlation with the overlapping part
of this block is used to determine which other image block fits at
the position x. As the correlation function, the sum of the
squared gray value differences is used. The image blocks that are
taken into account for the correlation, and hence as candidates for
the data source of the next inpainting step, are called comparison
blocks. The search area for suitable gray value patterns in which
the centers of the comparison blocks is searched is limited to a
square of side length 2*<a href="#SearchSize"><i><code><span data-if="hdevelop" style="display:inline">SearchSize</span><span data-if="c" style="display:none">SearchSize</span><span data-if="cpp" style="display:none">SearchSize</span><span data-if="com" style="display:none">SearchSize</span><span data-if="dotnet" style="display:none">searchSize</span><span data-if="python" style="display:none">search_size</span></code></i></a>
 around the point x.
</p>
<p>On the one hand, the order in which the pixels of <a href="#Region"><i><code><span data-if="hdevelop" style="display:inline">区域</span><span data-if="c" style="display:none">区域</span><span data-if="cpp" style="display:none">区域</span><span data-if="com" style="display:none">区域</span><span data-if="dotnet" style="display:none">区域</span><span data-if="python" style="display:none">区域</span></code></i></a>
are filled in depends on the size of the overlapping area and thus
the number of pixels available for the correlation. On the other
hand, the absolute value of the derivative of the gray value
function tangential to the border of the computation area is also
considered. The larger the value of the parameter
<a href="#Anisotropy"><i><code><span data-if="hdevelop" style="display:inline">Anisotropy</span><span data-if="c" style="display:none">Anisotropy</span><span data-if="cpp" style="display:none">Anisotropy</span><span data-if="com" style="display:none">Anisotropy</span><span data-if="dotnet" style="display:none">anisotropy</span><span data-if="python" style="display:none">anisotropy</span></code></i></a> is, the more the points in which the derivative
is large are preferred. This way it can be achieved that, e.g.,
straight lines which are represented by large gradients, are
continued through the entire computation area without being
interrupted by the inpainting of image structures from other parts
of the border when the size of the inpainting area becomes small. On
the other hand, a large value of <a href="#Anisotropy"><i><code><span data-if="hdevelop" style="display:inline">Anisotropy</span><span data-if="c" style="display:none">Anisotropy</span><span data-if="cpp" style="display:none">Anisotropy</span><span data-if="com" style="display:none">Anisotropy</span><span data-if="dotnet" style="display:none">anisotropy</span><span data-if="python" style="display:none">anisotropy</span></code></i></a> also means that
possible phantom edges, i.e., unwanted random structures that have
developed during the inpainting process, are also propagated and the
magnitude of those image disturbances is increased.
</p>
<p>To confine the formation of such artifacts, the original algorithm
can be extended by a post-iteration step that selects smooth and
inconspicuous image patches as data sources for the inpainting. If
the parameter <a href="#PostIteration"><i><code><span data-if="hdevelop" style="display:inline">PostIteration</span><span data-if="c" style="display:none">PostIteration</span><span data-if="cpp" style="display:none">PostIteration</span><span data-if="com" style="display:none">PostIteration</span><span data-if="dotnet" style="display:none">postIteration</span><span data-if="python" style="display:none">post_iteration</span></code></i></a> is set to <i><span data-if="hdevelop" style="display:inline">'min_grad'</span><span data-if="c" style="display:none">"min_grad"</span><span data-if="cpp" style="display:none">"min_grad"</span><span data-if="com" style="display:none">"min_grad"</span><span data-if="dotnet" style="display:none">"min_grad"</span><span data-if="python" style="display:none">"min_grad"</span></i>
the sum of the squares of the gray value gradients is minimized on
the comparison blocks. With the value
<i><span data-if="hdevelop" style="display:inline">'min_range_extension'</span><span data-if="c" style="display:none">"min_range_extension"</span><span data-if="cpp" style="display:none">"min_range_extension"</span><span data-if="com" style="display:none">"min_range_extension"</span><span data-if="dotnet" style="display:none">"min_range_extension"</span><span data-if="python" style="display:none">"min_range_extension"</span></i>, the growth of the gray value
interval of the comparison blocks with respect to the reference
block around the point x is minimized. If <a href="#PostIteration"><i><code><span data-if="hdevelop" style="display:inline">PostIteration</span><span data-if="c" style="display:none">PostIteration</span><span data-if="cpp" style="display:none">PostIteration</span><span data-if="com" style="display:none">PostIteration</span><span data-if="dotnet" style="display:none">postIteration</span><span data-if="python" style="display:none">post_iteration</span></code></i></a>
has the value <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i> no post-iteration is performed. The
choice of feasible blocks for this minimization process is
determined by the parameter <a href="#Smoothness"><i><code><span data-if="hdevelop" style="display:inline">Smoothness</span><span data-if="c" style="display:none">Smoothness</span><span data-if="cpp" style="display:none">Smoothness</span><span data-if="com" style="display:none">Smoothness</span><span data-if="dotnet" style="display:none">smoothness</span><span data-if="python" style="display:none">smoothness</span></code></i></a>, which is an upper
limit to the permitted increase of the mean absolute gray value
difference between the comparison blocks and the reference block
with respect to the block that was selected by the original
algorithm. With increasing value of <a href="#Smoothness"><i><code><span data-if="hdevelop" style="display:inline">Smoothness</span><span data-if="c" style="display:none">Smoothness</span><span data-if="cpp" style="display:none">Smoothness</span><span data-if="com" style="display:none">Smoothness</span><span data-if="dotnet" style="display:none">smoothness</span><span data-if="python" style="display:none">smoothness</span></code></i></a>, the
inpainting result becomes smoother and loses structure. The matching
accuracy of the selected comparison blocks decreases. If
<a href="#Smoothness"><i><code><span data-if="hdevelop" style="display:inline">Smoothness</span><span data-if="c" style="display:none">Smoothness</span><span data-if="cpp" style="display:none">Smoothness</span><span data-if="com" style="display:none">Smoothness</span><span data-if="dotnet" style="display:none">smoothness</span><span data-if="python" style="display:none">smoothness</span></code></i></a> is set to <i>0</i>, the post-iteration only
considers comparison blocks with an equally high correlation to the
reference block.
</p>
<p>If the inpainting process cannot be completed because there are
points x, for which no complete block of intact gray value
information is contained in the search area of size
<a href="#SearchSize"><i><code><span data-if="hdevelop" style="display:inline">SearchSize</span><span data-if="c" style="display:none">SearchSize</span><span data-if="cpp" style="display:none">SearchSize</span><span data-if="com" style="display:none">SearchSize</span><span data-if="dotnet" style="display:none">searchSize</span><span data-if="python" style="display:none">search_size</span></code></i></a>, the remaining pixels keep their initial gray
value and the ROI of the output image <a href="#InpaintedImage"><i><code><span data-if="hdevelop" style="display:inline">InpaintedImage</span><span data-if="c" style="display:none">InpaintedImage</span><span data-if="cpp" style="display:none">InpaintedImage</span><span data-if="com" style="display:none">InpaintedImage</span><span data-if="dotnet" style="display:none">inpaintedImage</span><span data-if="python" style="display:none">inpainted_image</span></code></i></a> is
reduced by the region that could not be processed. If the structure
size of the ROI of <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> or of the computation area
<a href="#Region"><i><code><span data-if="hdevelop" style="display:inline">区域</span><span data-if="c" style="display:none">区域</span><span data-if="cpp" style="display:none">区域</span><span data-if="com" style="display:none">区域</span><span data-if="dotnet" style="display:none">区域</span><span data-if="python" style="display:none">区域</span></code></i></a> is smaller than <a href="#MaskSize"><i><code><span data-if="hdevelop" style="display:inline">MaskSize</span><span data-if="c" style="display:none">MaskSize</span><span data-if="cpp" style="display:none">MaskSize</span><span data-if="com" style="display:none">MaskSize</span><span data-if="dotnet" style="display:none">maskSize</span><span data-if="python" style="display:none">mask_size</span></code></i></a>, the execution
time of the algorithm can increase extremely. Hence, it is
recommended to only use clearly structured input regions.  </p>
<h2 id="sec_attention">注意</h2>
<p>Note that filter operators may return unexpected results if
an image with a reduced domain is used as input. Please refer to the
chapter <a href="toc_filters.html">过滤器</a>.</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>在元组级别自动并行化。</li>
  
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>(multichannel-)image(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2 / real)</span>
</div>
<p class="pardesc">Input image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Region" class="parname"><b><code><span data-if="hdevelop" style="display:inline">区域</span><span data-if="c" style="display:none">区域</span><span data-if="cpp" style="display:none">区域</span><span data-if="com" style="display:none">区域</span><span data-if="dotnet" style="display:none">区域</span><span data-if="python" style="display:none">区域</span></code></b> (input_object)  </span><span>region <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="c" style="display:none">Hobject</span></span>
</div>
<p class="pardesc">Inpainting region.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="InpaintedImage" class="parname"><b><code><span data-if="hdevelop" style="display:inline">InpaintedImage</span><span data-if="c" style="display:none">InpaintedImage</span><span data-if="cpp" style="display:none">InpaintedImage</span><span data-if="com" style="display:none">InpaintedImage</span><span data-if="dotnet" style="display:none">inpaintedImage</span><span data-if="python" style="display:none">inpainted_image</span></code></b> (output_object)  </span><span>image(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject *</span> (byte / uint2 / real)</span>
</div>
<p class="pardesc">Output image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="MaskSize" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MaskSize</span><span data-if="c" style="display:none">MaskSize</span><span data-if="cpp" style="display:none">MaskSize</span><span data-if="com" style="display:none">MaskSize</span><span data-if="dotnet" style="display:none">maskSize</span><span data-if="python" style="display:none">mask_size</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Size of the inpainting blocks.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>9</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>7, 9, 11, 15, 21</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>MaskSize &gt;= 3 &amp;&amp; odd(MaskSize)</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="SearchSize" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SearchSize</span><span data-if="c" style="display:none">SearchSize</span><span data-if="cpp" style="display:none">SearchSize</span><span data-if="com" style="display:none">SearchSize</span><span data-if="dotnet" style="display:none">searchSize</span><span data-if="python" style="display:none">search_size</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Size of the search window.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>30</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>15, 30, 50, 100, 1000</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>2 * SearchSize &gt; MaskSize</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Anisotropy" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Anisotropy</span><span data-if="c" style="display:none">Anisotropy</span><span data-if="cpp" style="display:none">Anisotropy</span><span data-if="com" style="display:none">Anisotropy</span><span data-if="dotnet" style="display:none">anisotropy</span><span data-if="python" style="display:none">anisotropy</span></code></b> (input_control)  </span><span>real <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Influence of the edge amplitude on the
inpainting order.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.0, 0.01, 0.1, 0.5, 1.0, 10.0</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>Anisotropy &gt;= 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="PostIteration" class="parname"><b><code><span data-if="hdevelop" style="display:inline">PostIteration</span><span data-if="c" style="display:none">PostIteration</span><span data-if="cpp" style="display:none">PostIteration</span><span data-if="com" style="display:none">PostIteration</span><span data-if="dotnet" style="display:none">postIteration</span><span data-if="python" style="display:none">post_iteration</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Post-iteration for artifact reduction.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'none'</span>
    <span data-if="c" style="display:none">"none"</span>
    <span data-if="cpp" style="display:none">"none"</span>
    <span data-if="com" style="display:none">"none"</span>
    <span data-if="dotnet" style="display:none">"none"</span>
    <span data-if="python" style="display:none">"none"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'min_grad'</span><span data-if="c" style="display:none">"min_grad"</span><span data-if="cpp" style="display:none">"min_grad"</span><span data-if="com" style="display:none">"min_grad"</span><span data-if="dotnet" style="display:none">"min_grad"</span><span data-if="python" style="display:none">"min_grad"</span>, <span data-if="hdevelop" style="display:inline">'min_range_extension'</span><span data-if="c" style="display:none">"min_range_extension"</span><span data-if="cpp" style="display:none">"min_range_extension"</span><span data-if="com" style="display:none">"min_range_extension"</span><span data-if="dotnet" style="display:none">"min_range_extension"</span><span data-if="python" style="display:none">"min_range_extension"</span>, <span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Smoothness" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Smoothness</span><span data-if="c" style="display:none">Smoothness</span><span data-if="cpp" style="display:none">Smoothness</span><span data-if="com" style="display:none">Smoothness</span><span data-if="dotnet" style="display:none">smoothness</span><span data-if="python" style="display:none">smoothness</span></code></b> (input_control)  </span><span>real <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Gray value tolerance for post-iteration.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.0, 0.1, 0.2, 0.5, 1.0</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>Smoothness &gt;= 0</code></p>
</div>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
